<?php
/**
 * Created by PhpStorm.
 * User: wumengmeng <wu_mengmeng@foxmail.com>
 * Date: 2019/4/26 0026
 * Time: 14:35
 */

namespace HiCommon\Service;

use HiCommon\Repository\UsersCompanyRepository;
use HiCommon\Repository\UsersVehicleRepository;

class UsersCompanyService extends BaseService
{
//    public function __construct() {
//        $this->base_repository = new UsersCompanyRepository();
//        $this->users_vehicle_repository = new UsersVehicleRepository();
//    }

    /**
     * 用户企业列表
     *
     * @param int $n_uid
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_get_user_company_list($n_uid = 0){
        $n_uid = intval($n_uid);
        if($n_uid <= 0){
            return hello_error('用户id不能为空');
        }
        $arr_option = [
          'where'=>['user_id'=>$n_uid,'status'=>1],
          'withCount'=>['vehicle'],
        ];
        $res = UsersCompanyRepository::base_get_all($arr_option)->toarray();
        return  hello_success('成功',$res);
    }


    /**
     * 首页进入车辆详情页-企业列表
     *
     * @param int $n_uid
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_get_index_company_list($n_uid = 0){
        $n_uid = intval($n_uid);
        if($n_uid <= 0){
            return hello_error('用户id不能为空');
        }
        $arr_option = [
          'where'=>['user_id'=>$n_uid,'status'=>1],
          'field'=>['id','user_id','company_name'],
          'with'=>['vehicle.simple_vehicle_model']
//          'withCount'=>['vehicle'],
        ];

        //企业列表-企业车辆列表
        $arr_company = UsersCompanyRepository::base_get_all($arr_option)->toarray();

        //个人车辆-个人车辆列表
        $arr_user_vehicle_list = UsersVehicleRepository::get_all_by_uid($n_uid)->toarray();
        $arr_user_vehicle[] = [
          'id'=>0,
          'user_id'=>$n_uid,
          'company_name'=>'个人车辆',
          'vehicle'=>$arr_user_vehicle_list,
        ];
        $arr_company = array_merge($arr_user_vehicle,$arr_company);

        foreach ($arr_company as &$value)
        {
            foreach ($value['vehicle'] as &$vvv)
            {
                $vvv['vehicle_model'] = $vvv['simple_vehicle_model'];
                unset($vvv['simple_vehicle_model']);
                unset($vvv['extend']);
            }
        }

        return  hello_success('成功',$arr_company);
    }

    /**
     * 添加企业
     *
     * @param int   $n_uid
     * @param array $arr_input
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_add_user_company($n_uid = 0,$arr_input = []){
        $n_uid = intval($n_uid);
        filter_input_data($arr_input);//过滤数组里的null字段，同时去掉字符串中的空格
        if($n_uid <= 0){
            return hello_error('用户id不能为空');
        }
        if(!is_array($arr_input) || count($arr_input) <= 0){
            return hello_error('请提交数据');
        }
        if(mb_strlen($arr_input['company_name']) <= 0){
            return hello_error('请填写企业名称');
        }
        if(mb_strlen($arr_input['company_logo']) <= 0){
            return hello_error('请上传企业logo');
        }
        if(mb_strlen($arr_input['company_name']) > 50){
            return hello_error('企业名称要小于50字符');
        }
        if(mb_strlen($arr_input['company_logo']) > 150){
            return hello_error('企业logo要小于150字符');
        }
        $arr_input['user_id'] = $n_uid;
        $res = UsersCompanyRepository::base_add_one($arr_input)->toarray();
        if(empty($res)){
            return hello_error('添加失败');
        }
        return  hello_success('添加成功',$res);
    }

    /**
     * 删除用户企业
     *
     * @param int    $n_uid
     * @param int    $n_id
     * @param string $s_type 类型为api时只能删除用户自己的数据
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_del_user_company($n_id = 0,$n_uid = 0,$s_type = 'api'){
        $n_uid = intval($n_uid);
        $n_id = intval($n_id);
        if($n_uid <= 0 && $s_type == 'api'){
            return hello_error('用户id不能为空');
        }
        if($n_id <= 0){
            return hello_error('数据id不能为空');
        }

        //查询数据，用户只能删除自己的企业
        $res = UsersCompanyRepository::base_find_one($n_id,['field'=>['id','user_id']]);
        if(is_null($res)){
            return hello_error('数据不存在');
        }
        if($res->user_id != $n_uid  && $s_type == 'api'){
            return hello_error('只能删除自己的企业');
        }

        //删除数据
        $res = UsersCompanyRepository::delete_one_user_company($n_id);
        if($res == 0){
            return hello_error('删除失败');
        }
        return  hello_success('删除成功');
    }

    /**
     * 修改企业
     *
     * @param int   $n_uid
     * @param array $arr_input
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_edit_user_company($n_uid = 0,$arr_input = []){
        $n_uid = intval($n_uid);
        $n_id = intval($arr_input['id']);
        filter_input_data($arr_input);//过滤数组里的null字段，同时去掉字符串中的空格
        if($n_uid <= 0){
            return hello_error('用户id不能为空');
        }
        if($n_id <= 0){
            return hello_error('数据id不能为空');
        }
        if(!is_array($arr_input) || count($arr_input) <= 0){
            return hello_error('请提交数据');
        }
        if(mb_strlen($arr_input['company_name']) <= 0){
            return hello_error('请填写企业名称');
        }
        if(mb_strlen($arr_input['company_logo']) <= 0){
            return hello_error('请上传企业logo');
        }
        if(mb_strlen($arr_input['company_name']) > 50){
            return hello_error('企业名称要小于50字符');
        }
        if(mb_strlen($arr_input['company_logo']) > 150){
            return hello_error('企业logo要小于150字符');
        }

        //查询数据，用户只能修改自己的企业
        $res = UsersCompanyRepository::base_find_one($n_id,['field'=>['id','user_id']]);
        if(is_null($res)){
            return hello_error('数据不存在');
        }
        if($res->user_id != $n_uid){
            return hello_error('只能修改自己的企业');
        }

        $arr_input['user_id'] = $n_uid;
        $res = UsersCompanyRepository::base_edit_one($arr_input);
        if($res != 1){
            return hello_error('修改失败');
        }
        return  hello_success('修改成功',$res);
    }

    /**
     * 企业-车辆列表
     *
     * @param $n_company_id
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_company_vehicle_list($n_company_id){
        $n_company_id = intval($n_company_id);
        if($n_company_id <= 0){
            return hello_error('企业id不能为空');
        }
        $arr_company_vehicle = UsersVehicleRepository::get_all_by_company_id($n_company_id)->toarray();

        foreach ($arr_company_vehicle as &$value)
        {
            if(!is_null($value['nearly_check'])){
                $value['nearly_check'] = date('Y-m-d',strtotime($value['nearly_check']['checked_at']));
            }

            $value['vehicle_model'] = $value['simple_vehicle_model'];
            unset($value['simple_vehicle_model']);

        }

        return  hello_success('成功',$arr_company_vehicle);
    }
}